Multi-participant computing applications allow multiple participants using different computing systems to collaboratively accomplish tasks over a communications network. For example, some computing applications may allow shared viewing and editing of documents, so that different participants can view other participants' revisions to a document and provide their own changes to the other participants in real time or near real time. Other computing applications, such as multi-participant gaming applications, allow multiple participants to participate in the same game. Participants in a multi-participant gaming applications may work together in some instances to accomplish a particular objective, may compete with each other in other instances, or may engage in a hybrid combination of the two by working together to accomplish certain game objective while competing against each other to accomplish others.
As the number of participants increase, the resources needed to maintain synchronization and consistency between actions taken by different participants also increases. Synchronization and consistency may be used to ensure that each participant is informed of the actions taken by other participants and/or prevented from taking an action inconsistent with or duplicative of another action previously taken by another participant.
Synchronization and consistency have been preserved in multi-participant applications using real time updating and locks. Real time updating, in which the actions taken by each participant is transmitted in real time to the other participants as the action occurs, consumes increasing resources and bandwidth as the number of participants increases because each update is transmitted to each participant.
Similarly, locking mechanisms, in which a data field or object is locked to participants while a first participant is effecting a change to the object, also consume increasing resources and bandwidth as the number of participants increases. This increased resource and bandwidth demand may be attributable to increased lock-related queries and retry attempts on locked objects as the number of participants increases.
There is a need to reduce the data traffic, bandwidth use, and resources required to synchronize different participant actions in multi-participant applications.